home *** CD-ROM | disk | FTP | other *** search
-
- sub catch {
- package exception;
- local($__code__, @__exceptions__) = @_;
- local($__package__) = caller;
- local($__exception__);
-
- eval "package $__package__; $__code__";
- if ($__exception__ = &'thrown) {
- for (@__exceptions__) {
- return $__exception__ if /$__exception__/;
- }
- &'throw($__exception__);
- }
- }
-
- sub throw {
- local($exception) = @_;
- die "EXCEPTION: $exception\n";
- }
-
- sub thrown {
- $@ =~ /^(EXCEPTION: )+(.+)/ && $2;
- }
-
- 1;
-